// miniprogram/pages/mycard.js

const app = getApp();
const db = wx.cloud.database();
const col = db.collection('post_scan');
const _ = db.command;

Page({

  /**
   * 页面的初始数据
   */
  data: {
    myCards:[],
    select: 0,
    prizes: null,
    isShow: true
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    // 从数据库中获取邮字的数据
    col.where({
      '_openid': app.globalData.openid
    }).get().then((res)=>{
      console.log('mycard',res);
      if(res.data.length > 0){
        let words = res.data[0].words;
        this.setData({
          myCards: words
        })
      }
    })
  },

  // 选择邮字
  select(e){
    // 下标
    let index = e.currentTarget.dataset.index;
    // 获取data中的myCards和select
    let {myCards,select} = this.data;
    // 限制用户必须拥有这个字 number != 0
    if(myCards[index].number == 0){
      return;
    }

    // 1. 已选中两个时，选第三个需要阻止
    // 2. 如果已选两个，点击的是已选中的话，不进入判断
    if(select >=2 && !myCards[index].check){
      return;
    }

    if(!myCards[index].check){
      // 开始时未选中
      myCards[index].check = true;
      select++;
    }else{
      // 开始时已选中
      myCards[index].check = false;
      select--;
    }

    // 最终结果设置
    this.setData({
      myCards: myCards,
      select: select
    })
  },

  // 合成
  merge(){
    // select必须为2
    let {select,myCards} = this.data;
    if(select < 2){
      wx.showToast({
        title: '必须选择两张邮卡',
        icon: 'none',
        duration: 1500
      });
      return;
    }

    let selectedArr = [];
    myCards.forEach( (item,index)=>{  // 存放用户选择的下标
      if(item.check == true){
        selectedArr.push(index);
      }
    });
    console.log('selectedArr',selectedArr);
    
    wx.cloud.callFunction({
      name: 'merge',
      data: {
        selectedArr: selectedArr  // 将参数传递给云函数
      },
      success: (res)=>{
        console.log('成功回调',res);
        let prize = res.result.prize;
        if(res.result.success){
          wx.showToast({
            title: '抽奖中...',
            icon: 'loading',
            duration: 1000
          })
          // 设置定时器，等待上一步loading执行完，再setData
          let t = setTimeout(()=>{
            this.setData({  // 抽奖成功，修改给获奖面板切换显示的数据
              prizes: prize,
              isShow: false
            })
            clearTimeout(t);
          },1500); 
        }else{
          wx.showToast({
            title: res.result.msg,
            icon: 'none',
            duration: 2000
          })
        }

        // 更新邮卡的数量数据，刷新页面的选中
        this.setData({ 
          myCards: res.result.myCards
        })
      }
    })
  } ,
  
  // 跳转到personInfo页面
  toPersonInfo(){
    wx.redirectTo({
      url: '../personInfo/personInfo',
    })
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})